using System;
namespace GraphSpace
{
	public class SZK_Knoten : Knoten
	{	
		// Attribute für Algorithmen
		protected bool flag;			// Flag zum Markieren des Knotens
		protected int d_time;			// Zeitpunkt der Entdeckung beim Graph-Scanning
		protected int f_time;			// Zeitpunkt der Abarbeitung beim Graph-Scanning
		protected int current;		// Zeiger auf eine ausgehende Kante (wichtig für Tiefensuche)
		protected int pred;			// Zeiger auf den Vorgänger Knoten beim Graph-Scanning
		
		public SZK_Knoten(int id): base(id)
		{			
			this.flag = false;
			this.d_time = 0;
			this.f_time = 0;
			this.current = 0;
			this.pred = 0;
		}
		
		public override void init (int id)
		{
			this.id = id;
			
			this.flag = false;
			this.d_time = 0;
			this.f_time = 0;
			this.current = 0;
			this.pred = 0;
		}
				
		// setzt die Attribute für Algorithmen auf ihre Standardwerte zurück
		public override void reset()
		{
			this.flag = false;
			this.d_time = 0;
			this.f_time = 0;
			this.current = 0;
			this.pred = 0;	
		}
		
		public bool Flag
		{
			get{return this.flag;}
			set{this.flag = value;}
		}	
		public int D_time
		{
			set{this.d_time = value;}
			get{return this.d_time;}
		}
		public int F_time
		{
			set{this.f_time = value;}
			get{return this.f_time;}
		}
		public int Current
		{
			set{this.current = value;}
			get{return this.current;}
		}
		public int Pred
		{
			set{this.pred = value;}
			get{return this.pred;}
		}
	}
}

